package com.life.ai.server.common.exception.errorcode;

/**
 * 基础错误码定义
 *
 * @author soupcat
 */
public enum BaseErrorCode implements IErrorCode {

    // ========== 一级宏观错误码 客户端错误 ==========
    CLIENT_ERROR("A00001", "用户端错误"),
    REQ_PARAMS_ERROR("A00002", "参数错误"),
    REQ_METHOD_ERROR("A00003", "请求方法错误"),
    REQ_PATH_ERROR("A00004", "请求地址错误"),

    // ========== 二级宏观错误码 用户注册错误 ==========
    USER_REGISTER_ERROR("A00100", "用户注册错误"),
    USER_NAME_VERIFY_ERROR("A00110", "用户名校验失败"),
    USER_NAME_EXIST_ERROR("A00111", "用户名已存在"),
    USER_NAME_SENSITIVE_ERROR("A00112", "用户名包含敏感词"),
    USER_NAME_SPECIAL_CHARACTER_ERROR("A00113", "用户名包含特殊字符"),
    PASSWORD_VERIFY_ERROR("A00120", "密码校验失败"),
    PASSWORD_SHORT_ERROR("A00121", "密码长度不够"),
    PHONE_VERIFY_ERROR("A00151", "手机格式校验失败"),

    // ========== 二级宏观错误码 认证授权异常 ==========
    USER_LOGIN_ERROR("A00200", "用户认证授权异常"),
    USER_AUTH_EXPIRED("A00230", "未登录或登录已过期"),
    USER_PERMIT_ERROR("A00300", "权限不足"),

    // ========== 一级宏观错误码 系统执行出错 ==========
    SERVICE_ERROR("B00001", "系统出小差了"),

    // ========== 二级宏观错误码 系统执行超时 ==========
    SERVICE_TIMEOUT_ERROR("B00100", "系统执行超时"),
    TRY_LOCK_ERROR("B00101", "加锁失败"),

    // ========== 二级宏观错误码 系统执行超时 ==========
    FILE_OPERATE_ERROR("B00300", "文件操作异常"),
    FILE_DOWNLOAD_ERROR("B00301", "文件下载异常"),

    // ========== 一级宏观错误码 调用第三方服务出错 ==========
    REMOTE_ERROR("C00001", "调用第三方服务异常"),
    ;

    private final String code;

    private final String message;

    BaseErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
